# 5.1 docker持久化之volume模块数据共享


当前是容器小白对volume数据共享的一次实验笔记,还请大佬勿喷,也欢迎大佬们前来指点,谢谢


# 实验

关于上面的章节,对于volume模块的持久化是将容器中指定的目录挂载到docker客户端中的,那么这样挂载就会让容器中的数据出现到宿主机中的docker客户端存放的volume模块的目录中,当看这种情况,就会想出很多问题,话不多说,实验开始


假设目前有一台nginx的机器,挂载的volume容器中的目录为nginx默认的数据目录"/usr/share/nginx/html"

目前实验环境,只有docker跟nginx镜像,其他什么都没有,包括volume

创建一个容器,并挂载volume卷,映射端口

JSkdLF.png (opens new window)


接下来我们在修改一下index.html中的内容、删除50x.html文件,在创建新的容器并挂载volume卷

JSezRA.png

对于这个结果,我们可以大胆的猜想,我的猜想就是:如果在volume数据卷中有数据,那么新挂载的容器对应目录的内容不会覆盖到volume数据卷中,并且会已volume数据卷的数据为主


对应上面的猜想,把实验环境全部清空,只保留docker跟nginx镜像

先创建一个volume数据卷,在创建一个容器,并挂载刚刚创建的volume卷,映射端口

JSngNF.png (opens new window)

这里的实验结果,还是让容器中的目录内容覆盖了已创建好的数据卷,那么是我的猜想出错了吗

不不不,上面的实验结果是数据卷中有数据后才没有出现覆盖的状态,那么我们再做一次实验


接合上面的猜想,在次把实验环境全部清空,只保留docker跟nginx镜像

这次要先创建一个volume数据卷,并且在这数据卷写入一个文件,在创建一个容器,并挂载刚刚创建的volume卷,映射端口

JSKdLq.png (opens new window)

很好,猜想成立,当数据卷中有数据,那么新挂载的容器不会覆盖其数据